/*=============================================================================
*
*   Copyright (C) 2020 All rights reserved.
*
*   Filename:		dimension_type.hpp
*
*   Author: Wang Zhecheng - wangzhecheng@yeah.net
*
*   Date: 2020-03-06 16:37
*
*   Last Editors: Wang Zhecheng - wangzhecheng@yeah.net
*
*   Last modified:	2020-03-09 21:26
*
*   Description:
*
=============================================================================*/
#ifndef DIMENSION_TYPE_H
#define DIMENSION_TYPE_H

#include "point.hpp"

namespace geoxfem {
namespace geometry {

struct plane_strain {};
struct three_dimension {};
struct plane_stress {};

}  // namespace geometry

namespace traits {
template <>
struct dimension<geometry::plane_strain> {
  static constexpr size_t value = 2;
};
template <>
struct dimension<geometry::plane_stress> {
  static constexpr size_t value = 2;
};
template <>
struct dimension<geometry::three_dimension> {
  static constexpr size_t value = 3;
};
template <typename T>
struct dimension_type {
  using type = void;
};

}  // namespace traits

}  // namespace geoxfem

#endif /* DIMENSION_TYPE_H */
